package leetcode.offer;

import leetcode.common.ListNode;

@SuppressWarnings("all")
public class _24_反转链表_递归 {

    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        // 压栈到最后一个结点后开始触发递归基条件开始弹栈
        // 弹出的第一个结点就是链表尾结点的前驱结点
        // 1->2->3->4->5->NULL 自上而下找到5后自下而上的返回，此时的head=4
        ListNode node = reverseList(head.next);
        // 尾结点指向前驱结点
        // 5->4
        head.next.next = head;
        // 前驱结点的指针置空
        // 5->4->null
        head.next = null;
        return node;
    }

}
